/*
 *  Copyright (c) 2018,  Bosch Software Innovations GmbH.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

#ifndef ROS2_ROSBAG_EVALUATION_BENCHMARK_H
#define ROS2_ROSBAG_EVALUATION_BENCHMARK_H

#include <chrono>
#include <ostream>

namespace ros2bag
{

class Benchmark
{
public:
  Benchmark() = default;

  virtual ~Benchmark() = default;

  virtual void run() const = 0;

  virtual void write_csv(std::ostream & out_stream, bool with_header) const = 0;

};

void write_csv_file(
  std::string const & file_name, Benchmark const & benchmark, bool with_header);

}

#endif //ROS2_ROSBAG_EVALUATION_BENCHMARK_H
